package code.c03_stackQueue.sqStack;

/**
 * @author thinkpad - 83start
 * @version v1.0
 * @create 2022/10/2 20:30
 * @package code.c03_stackQueue.SqStack
 * @description 设计一个算法，利用顺序栈判断用户输入的字符串表达式是否为回文，并用相关数据进行测试
 *
 * 思路：将字符串的前半部分字符串切割成字符，并压进栈中，后半部分的字符与栈顶的元素一一比较。如果不一致，则判断不是回文。
 * 奇偶数。如果是奇数，中间的一个字符直接跳过。
 */

public class Exam_3_5 {
    public boolean isPalindrome(String str){
        SqStackClass<Character> st = new SqStackClass<>();
        int n = str.length();
        int i = 0;
        // 将前半段的字符串压进栈
        while (i<n/2){
            st.push(str.charAt(i));
            i++;
        }
        // 判断奇偶
        if (n %2 ==1){
            i ++;
        }
        // 后半段与前半段相比较
        while (i<n){
            if (str.charAt(i) != st.pop()){
                return false;
            }
            i++;
        }
        return true;
    }

    public static void main(String[] args) {
        Exam_3_5 exam_3_5 = new Exam_3_5();

        System.out.println(exam_3_5.isPalindrome("12321"));
        System.out.println(exam_3_5.isPalindrome("122312123213123"));
    }
}
